package modelo;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;

import controlador.AperturaMesa;

import entities.MozoEntity;
import entities.PedidoEntity;
import hbt.AbstractHibernateManager;


public class PedidoDao extends AbstractHibernateManager {
	
	private static PedidoDao instancia = null;
	
	public static PedidoDao getInstancia() {
		if(instancia == null) {
			instancia = new PedidoDao();
		}
		return instancia;
	}

	public void save (PedidoEntity pedido){
		Session s = null;
		try {
			s=getNewSession();
			s.beginTransaction();
			s.persist(pedido);
			s.flush();
			s.getTransaction().commit();
			System.out.println("[Pedido SAVED ON TABLE pedidos]::OK");
		} catch (HibernateException e) {
			e.printStackTrace();
		} finally{
			closeSession(s);
		}
	}
	
	public List<PedidoEntity> obtenerPedidos() {
		@SuppressWarnings("unchecked")
		List<PedidoEntity> pedidos = (List<PedidoEntity>) findAll("PedidoEntity");
		return pedidos;
	}

	
	
	public Integer obtenerUltimoIdPedido() {
		Session s = null;
		Integer ultimoId = 0;
			try {
				s=getNewSession();
				ultimoId = (Integer) s.createQuery("SELECT MAX(pedido.id) FROM PedidoEntity pedido ").uniqueResult();
			} catch (HibernateException e) {
				e.printStackTrace();
			} finally {
				closeSession(s);
				}

		return ultimoId;

	}
	

}
